1
局部对象生命周期:自动与静态
AI037Lesson 10
00:00

在 C++ 的舞台上,每个对象都有其生命周期—— 对象生命周期。它定义了对象在内存中占据空间的持续时间。在 函数体中, 局部变量 的默认行为是成为 自动,但我们可以命令它们变为 静态 以改变它们的命运。

1. 自动对象

默认情况下,局部变量是 自动对象。它们在 函数 执行到达其定义处时被创建(初始化),并在代码块结束时消亡(被回收)。它们位于栈上,因此每次调用都是全新的。

2. 局部静态对象

当你使用 静态 关键字时,你创建了一个 局部静态对象。这些对象仅在第一次控制流经过其定义前被初始化一次,并一直存活到程序终止。这使得函数可以在不污染全局作用域的情况下“记住”状态。

栈(自动)[ temp_val ]在代码块末尾销毁数据段(静态)[ persistent_val ]存活至程序退出

3. 递归陷阱

递归函数中,每一次 递归循环 都会为其自动对象创建一个独立实例。如果递归深度较大,将消耗大量栈空间。相反,一个 静态 对象会在该递归的每一层之间共享。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>